package com.chinasoft.back.mvc.advice;

import com.chinasoft.back.exception.BussinessException;
import com.chinasoft.back.exception.ExType;
import com.chinasoft.back.exception.SystemException;
import com.chinasoft.back.pojo.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author 中软zhang
 * @create 2023-08-26 13:38
 */
// 所有的异常它可以处理
@RestControllerAdvice
public class MyExceptionHandler {
    // 处理 业务异常
    @ExceptionHandler({BussinessException.class})
    public Result<String> doBussException(BussinessException be) {
        System.out.println("buss exception running");
        System.out.println(be);
        // 处理 业务异常逻辑
        // token invalid
        if (be.getCode() == ExType.InvalidToken) {
            // token 认证失败的情况
            Result<String> result = new Result<>();
            result.setStatus(1);
            result.setMessage(be.getMessage());
            return result;
        } else {
            Result<String> result = new Result<>();
            result.setStatus(100);
            be.printStackTrace();
            result.setMessage("未知异常：" + be.getMessage());
            return result;
        }
    }


    // 处理系统异常
//    @ExceptionHandler({SystemException.class})
//    public Result doSystemException(SystemException se) {
//        // 处理 系统异常逻辑
//        // 记录日志
//        se.printStackTrace();
//        // 通知维护人员
//
////        return new Result(se.getCode(), "系统繁忙 ！", null);
//        return new Result(se.getCode(), se.getMessage(), null, "");
//    }


  /*  // 处理其他异常
    @ExceptionHandler({RuntimeException.class})
    public Result doRuntimeE(Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
        System.out.println("runtime exception is running");
        return Result.error("系统繁忙， 请稍后再试 ！", 505);
    }

    @ExceptionHandler({Exception.class})
    public Result doAllException(Exception e) {
        System.out.println("异常别处理了");
        System.out.println(e.getMessage());
        return Result.error("exmsg " + e.getMessage(), 500);
    }*/
}
